package com.learn;

import java.util.Arrays;
import java.util.HashMap;

/**
 * 给定一个字符串，找到它的第一个不重复的字符，并返回它的索引。如果不存在，则返回 -1。
 */

public class num_387 {
    public static int firstUniqCharFastest(String s) {
        int ans = s.length();
        int temp;
        //从头开始遍历字母表，从a开始
        for (char i = 'a'; i <= 'z'; i++) {
            //记录位置，如果字母表中的字母不在字符串返回-1
            temp = s.indexOf(i);
            if (temp==-1)
                continue;

            //如果temp出现的位置，是字母最后出现的位置，则
            if (temp==s.lastIndexOf(i))
                //ans等于从他们两其中取最小值。因为找的是第一个出现的位置，所以位置数值会小
                ans=Math.min(ans,temp);
        }
        //如果ans等于长度，说明遍历完成之后，还没有找到第一个出现的最小值，所以返回-1
        return ans==s.length()?-1:ans;
    }
    public static int firstUniqCharMyself(String s) {
        HashMap<Character, Integer> localNumMap = new HashMap<>();
        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            char aChar = chars[i];
            if (localNumMap.containsKey(aChar)) {
                //这里没能把后面的dad给洗出去
//                localNumMap.remove(aChar);
                localNumMap.put(aChar,-1);
            }else {
                localNumMap.put(aChar,i);
            }
        }

        Object[] objects = localNumMap.values().toArray();
        Arrays.sort(objects);
        for (int i=0;i<objects.length;i++){
            if (-1 !=(int) objects[i]) {
                return (int) objects[i];
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        System.out.println(firstUniqCharFastest( "aaccdadaade"));
    }
}
